热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

主体|发生_C++基础入门丨6.函数——定义调用和声明

篇首语:本文由编程笔记#小编为大家整理,主要介绍了C++基础入门丨6.函数——定义调用和声明相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了C++基础入门丨6. 函数——定义调用和声明相关的知识,希望对你有一定的参考价值。




操作系统:Windows 10
IDE:Visual Studio 2019



文章目录


    • 1 函数的定义
    • 2 函数的调用
    • 3 值传递
    • 4 函数的常见样式
    • 5 函数的声明
    • 6 函数的分文件编写




函数是一组一起执行一个任务的语句。每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。


函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。


C++ 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。


函数还有很多叫法,比如方法、子例程或程序,等等。


——https://www.runoob.com/cplusplus/c+±functions.html



1 函数的定义

函数的定义一般主要有5个步骤:

1、返回值类型

2、函数名

3、参数表列

4、函数体语句

5、return 表达式

语法:

返回值类型 函数名 (参数列表)

函数体语句
return表达式


  • 返回值类型 :一个函数可以返回一个值。在函数定义中
  • 函数名:给函数起个名称
  • 参数列表:使用该函数时,传入的数据
  • 函数体语句:花括号内的代码,函数内需要执行的语句
  • return表达式: 和返回值类型挂钩,函数执行完后,返回相应的数据

2 函数的调用

函数的调用即:使用我们定义好的函数。

语法: 函数名(参数)

#include<iostream>
using namespace std;
//函数定义
int add(int num1, int num2) //定义中的num1,num2称为形式参数&#xff0c;简称形参

int sum &#61; num1 &#43; num2;
return sum;

int main()
int a &#61; 1;
int b &#61; 1;
//调用add函数
int sum &#61; add(a, b);//调用时的a&#xff0c;b称为实际参数&#xff0c;简称实
cout << "sum &#61; " << sum << endl;
system("pause");
return 0;


  • 注意实参形参的区别。

3 值传递

函数的值传递也就是在函数调用时&#xff0c;实参将值传递给形参。

值传递时&#xff0c;如果形参发生&#xff0c;并不会影响实参。

#include
using namespace std;
void swap(int num1, int num2)

int temp &#61; num1;
num1 &#61; num2;
num2 &#61; temp;
cout << "交换后&#xff1a;" << endl;
cout << "num1 &#61; " << num1 << endl;
cout << "num2 &#61; " << num2 << endl;
//return ; 当函数声明时候&#xff0c;不需要返回值&#xff0c;可以不写return

int main()
int a &#61; 10;
int b &#61; 20;
swap(a, b);
cout << "main中的 a &#61; " << a << endl;
cout << "main中的 b &#61; " << b << endl;
system("pause");
return 0;


  • 形参的值发生交换&#xff0c;不影响实参的值。

4 函数的常见样式

4中常见的函数样式


样式代码示例
无参无返void test01()
有参无返void test02(int a)
无参有返int test03()
有参有返int test04(int a, int b)

5 函数的声明

函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。


  • 当在一个源文件中定义函数且在另一个文件中调用函数时&#xff0c;函数声明是必需的。在这种情况下&#xff0c;应该在调用函数的文件顶部声明函数。
  • 函数的声明可以多次&#xff0c;但是函数的定义只能有一次

函数声明&#xff1a;int max(int num1, int num2);



函数声明和函数定义的区别。



6 函数的分文件编写

函数的分文件编写主要作用是&#xff1a;让代码结构更加清晰。

函数分文件编写一般有4个步骤


  1. 创建后缀名为**.h**的头文件
  2. 创建后缀名为**.c&#43;&#43;**的源文件
  3. 在头文件中写函数的声明
  4. 在源文件中写函数的定义

示例&#xff1a;

//swap.h文件
#include
using namespace std;
//实现两个数字交换的函数声明
void swap(int a, int b);

//swap.c&#43;&#43;文件
#include "swap.h"
void swap(int a, int b)

int temp &#61; a;
a &#61; b;
b &#61; temp;
cout << "a &#61; " << a << endl;
cout << "b &#61; " << b << endl;

//main函数文件
#include "swap.h"
int main()

int a &#61; 100;
int b &#61; 200;
swap(a, b);
system("pause");
return 0;

—— END ——



Reference


  • [1]&#xff1a;https://www.bilibili.com/video/BV1VJ411M7WR


如果以上内容有任何错误或者不准确的地方&#xff0c;欢迎在下面 &#x1f447; 留言。或者你有更好的想法&#xff0c;欢迎一起交流学习~~~

更多精彩内容请前往 AXYZdong的博客


推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 本文介绍了如何在具备多个IP地址的FTP服务器环境中,通过动态地址端口复用和地址转换技术优化网络配置。重点讨论了2Mb/s DDN专线连接、Cisco 2611路由器及内部网络地址规划。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
author-avatar
QX封面精选
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有